草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - PostgreSQL:取消来自 C/C++ 程序的查询

我正在使用PostgreSQL8.3,并使用libpqAPI用C++编写程序。我使用PQsendQuery()函数异步执行命令。我正在尝试实现超时处理功能。我通过在超时到期时调用PQcancel()来实现它。我使用返回100000行(持续约0.5秒)且超时为1毫秒的查询对其进行了测试,发现PQcancel()不会取消命令,而是阻塞直到服务器完成执行,然后返回一个成功的查询。我知道文档说即使取消请求成功,查询仍可能会执行。我的问题是PQcancel()阻塞了我的执行线程,这是NotAcceptable,因为我使用异步处理(使用BoostAsio框架)所以我的程序除了执行之外可能还有其他任

c++ - 如何在设备内存中有效地随机播放数据?

问题在设备全局内存中移动许多随机(非合并)值时,哪种方法最有效?注意:许多值大于500。上下文我从事GPU的遗传算法实现已有一段时间了,我一直在努力在我的框架的灵active和GPU架构的微优化之间挣扎。GA数据始终驻留在GPU中。只有最佳代解决方案被复制到主机内存。详细场景我正在优化迁移功能。这里基本上很少有数据在设备全局内存中随机播放。但是我以这样的方式获得了我的数据顺序,它为GA运算符内核线程的内存访问方案合并,这使得洗牌一对“基因组”,一个跨越单个FLOAT值的问题,并以相同的跨步方式将它们与另一个基因组交换。已知解决方案问题不在于内存带宽,而是调用延迟和线程阻塞导致进程停滞的

c++ - 什么时候需要在 Ruby C 扩展中声明 volatile VALUE?

我找不到很多文档来说明何时适合在Ruby扩展中将VALUE声明为volatile以避免对正在使用的对象进行过早的垃圾回收。这是我到目前为止学到的东西。任何人都可以填空吗?当volatile不需要使用时:在C++对象成员中(因为它们永远不会在堆栈上?)在不调用RubyAPI的C/C++方法中(因为GC在调用RubyAPI之前不会打开)当volatile确实需要使用在调用任何RubyALLOC或malloc宏/函数的C/C++方法中(因为当内存高度碎片化时这些会触发GC)在调用任何Ruby函数的C/C++方法中(例如,rb_funcall、rb_ary_new等)其他避免GC的方法标记正在

c++ - 指针运算和积分提升

在表达式p+a中,其中p是一个指针类型,a是一个整数,整数提升规则是否适用?例如,如果a是一个char,在64位机器上它肯定会在添加到指针值之前扩展到64位(在编译的程序集中),但它是由标准指定的吗?会提升到什么地步?int、intptr_t还是ptrdiff_t?unsignedchar或size_t会被转换成什么? 最佳答案 因为char是一个整数类型,标准似乎不需要任何提升:对于加法,两个操作数都应具有算术或无作用域枚举类型,或一个操作数应是指向完全定义的对象类型的指针,而另一个应具有整数或无范围枚举类型似乎实现可能取决于底层

c++ - 在编译时强制执行静态存储

我有一个结构,我想在其上强制执行静态存储。这是DSP上的vector类型,不小心将其声明在堆栈上是用户的常见错误,会导致堆栈溢出、性能问题或两者兼而有之。据我所知,这是不可能的,但我很好奇是否还有其他人知道得更多。示例用例:staticVector64v1;//OKstaticVector64v2;//OKstaticVector64result;//OKresult=v1*v2;//OKVector64v3;//Iwouldlikethistogiveacompile-timeerrorVector64v4;result=v3*v4;我的编译器是Clang/LLVM3.2,编译器特定

c++ - C 和 C++ 静态初始化之间的区别

这个问题在这里已经有了答案:DifferencebetweeninitializationofstaticvariablesinCandC++(3个答案)关闭8年前。编译此代码示例时#include#includeintmyfunc(){printf("Constructor\n");return1;}staticconstintdummy=myfunc();intmain(){printf("main\n");return0;}它在编译为C++时有效,但在使用相同编译器(MingWgcc)时不能作为C。我得到一个initializerelementisnotconstantinCmo

c++ - 如何在 C 中创建多字节字符

在研究C和C++字符编码的过程中,我遇到了两种通用的编码方式:多字节字符和宽字符。为了加强我对那些系统(优点和缺点)的理解,我想做一些例子。由于wchar_t类型的native支持,使用宽字符做示例不是问题。但是当我想创建一个包含那些所谓的多字节字符的字符串时,我遇到了问题。我如何实际创建一个多字节字符串,该字符串使用与char数组一起使用的编码(使用VisualC++)?这种编码确实存在:http://www.gnu.org/software/libc/manual/html_node/Shift-State.html.但我只读过它,从未见过一个实际的例子。还是您必须为这种字符串创建

c++ - 在 ARM 平台上正确检测混合端浮点格式

我最近遇到了第三方库的问题,该库使用以下代码在ARM平台上测试混合端浮点格式:#ifdefined(__arm__)&&!(__ARM_EABI__)此检查在Android平台上错误地检测到混合端格式,但在iOS平台上工作正常。经过一番研究,我发现debianArmEabiPortdocument在GCC浮点预处理器宏部分中包含以下内容(强调我的):Whenportingcodeto"armel",thefollowingpreprocessormacrosareinteresting:__VFP_FP__meansthatthefloatingpointformatinuseisth

c++ - 忽略多行注释 git diff

我试图找出C/C++源代码中只有源代码发生变化的显着差异。我知道你可以使用gitdiff-G但在可以运行的正则表达式类型方面似乎非常有限。例如,它似乎没有提供一种方法来忽略C/C++中的多行注释。在运行diff之前,git或最好是libgit2中是否有任何方法可以忽略注释(包括多行)、空格等?或者确定diff输出中的一行是否是注释的方法? 最佳答案 gitdiff-w忽略空白差异。你不能忽略多行注释,因为git是一个版本控制工具,而不是依赖于语言的解释器。它不知道你的代码是C++。它不解析文件的语义,因此它无法解释什么是注释,什么不

c++ - 在 C 中包装 C++ 成员函数 - Visual Studio 2013 模板问题

我正在创建一个轻量级跨平台插件框架,它在应用程序和插件之间使用C接口(interface)(通常,但不总是,用C++编写)。我在帮助C++应用程序和插件编写者方面面临的挑战之一是找到一种简单的方法来跨C接口(interface)公开C++对象功能。我目前的解决方案感觉很简单,并使用模板“构建”基于thisgreatstackoverflowquestionandanswer包装底层C++成员函数的C签名函数。templatestructMemberFuncWrapper;template//C++memberfunctionstructMemberFuncWrapper{staticR